package cn.vehicle.service;

import cn.vehicle.domains.bo.QueryTransportVehicleBo;
import cn.vehicle.domains.entity.TransportVehicleEntity;

import java.util.List;

/**
 * 运输车辆服务接口
 * <p>
 * 定义运输车辆管理模块的核心业务操作，包括新增、修改、删除、查询等功能。
 * 该接口作为业务层与数据持久层之间的抽象层，为运输车辆模块提供统一的数据访问规范。
 * </p>
 *
 * <p>主要职责：</p>
 * <ul>
 *   <li>封装运输车辆的基础 CRUD 操作；</li>
 *   <li>提供根据条件查询运输车辆列表的方法；</li>
 *   <li>为业务层（Biz 层）提供类型安全的数据访问能力。</li>
 * </ul>
 */
public interface TransportVehicleService {
    /**
     * 新增运输车辆
     *
     * @param transportVehicleEntity 运输车辆实体对象，包含车辆基础信息
     */
    void addTransportVehicle(TransportVehicleEntity transportVehicleEntity);

    /**
     * 根据ID查询运输车辆信息
     *
     * @param id 运输车辆主键ID
     * @return 运输车辆实体对象
     */
    TransportVehicleEntity getTransportVehicleById(Long id);

    /**
     * 更新运输车辆信息
     *
     * @param updateEntity 更新后的运输车辆实体对象，需包含主键ID
     */
    void updateTransportVehicle(TransportVehicleEntity updateEntity);

    /**
     * 删除运输车辆记录
     *
     * @param id 运输车辆主键ID
     */
    void deleteTransportVehicle(Long id);

    /**
     * 查询运输车辆列表
     *
     * @param queryTransportVehicleBo 查询条件封装对象（如车牌号、类型、时间范围等）
     * @return 运输车辆实体列表
     */
    List<TransportVehicleEntity> selectTransportVehicleList(QueryTransportVehicleBo queryTransportVehicleBo);
}
